/**
 * 
 */
package com.util;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.utils.string.StringUtils;

public class RegionUtil {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

	}
	
	private static RegionUtil instance = null;
	public static synchronized RegionUtil getInstance()
	{
		if (instance == null)
			instance = new RegionUtil();
		return instance;
	}
	
	protected RegionUtil()
	{
		regions = new LinkedHashMap<String, Map<String, Region>>();
		
		for (int n = 0; n < region.length; n++)
		{
			if (!regions.containsKey(region[n][1]))
			{
				regions.put(region[n][1], new LinkedHashMap<String, Region>());
			}
			regions.get(region[n][1]).put(region[n][0], 
					new Region(StringUtils.fromInt(n + 1), region[n][0], region[n][1], region[n][2]));
		}
	}
	
	private Map<String, Map<String, Region>> regions = null;

	public List<Region> getRegion() {
		List<Region> l = new ArrayList<Region>();
		for (Entry<String, Map<String, Region>> e : regions.entrySet())
		{
			for (Entry<String, Region> er : e.getValue().entrySet())
			{
				l.add(new Region(er.getValue()));
			}
		}
		return l;
	}
	
	public List<Region> getRegion(String province)
	{
		List<Region> l = new ArrayList<Region>();
		if (regions.containsKey(province))
		{
			for (Entry<String, Region> e : regions.get(province).entrySet())
			{
				l.add(new Region(e.getValue()));
			}
		}
		return l;
	}
	
	public Region getRegion(String province, String code)
	{
		if (regions.containsKey(province))
		{
			for (Entry<String, Region> e : regions.get(province).entrySet())
			{
				if (e.getValue().getCode().equals(code))
					return new Region(e.getValue());
			}
		}
		return null;
	}
	public String getRegionByRegionName(String province, String regionName)
	{
		if (regions.containsKey(province))
		{
			for (Entry<String, Region> e : regions.get(province).entrySet())
			{
				if (e.getValue().getName().equals(regionName))
					return e.getValue().getCode();
			}
		}
		return "";
	}

	public Region getRegion(String province, Integer id)
	{
		if (regions.containsKey(province))
		{
			for (Entry<String, Region> e : regions.get(province).entrySet())
			{
				if (StringUtils.toFloat(e.getValue().getId()) == id)
					return new Region(e.getValue());
			}
		}
		return null;
	}
	
	private static final String[][] region =
	{
		{"ah1", "ah", "安庆"},
		{"ah2", "ah", "蚌埠"},
		{"ah3", "ah", "巢湖"},
		{"ah4", "ah", "池州"},
		{"ah5", "ah", "滁州"},
		{"ah6", "ah", "合肥"},
		{"ah7", "ah", "淮北"},
		{"ah8", "ah", "淮南"},
		{"ah9", "ah", "黄山"},
		{"ah10", "ah", "六安"},
		{"ah11", "ah", "马鞍山"},
		{"ah12", "ah", "宿州"},
		{"ah13", "ah", "铜陵"},
		{"ah14", "ah", "芜湖"},
		{"ah15", "ah", "宣城"},
		{"ah16", "ah", "亳州"},
		{"bj17", "bj", "北京"},
		{"cq18", "cq", "重庆"},
		{"fj19", "fj", "福州"},
		{"fj20", "fj", "龙岩"},
		{"fj21", "fj", "南平"},
		{"fj22", "fj", "宁德"},
		{"fj23", "fj", "莆田"},
		{"fj24", "fj", "泉州"},
		{"fj25", "fj", "三明"},
		{"fj26", "fj", "厦门"},
		{"fj27", "fj", "漳州"},
		{"gd28", "gd", "潮阳"},
		{"gd29", "gd", "潮州"},
		{"gd30", "gd", "东莞"},
		{"gd31", "gd", "佛山"},
		{"gd32", "gd", "广州"},
		{"gd33", "gd", "河源"},
		{"gd34", "gd", "惠州"},
		{"gd35", "gd", "江门"},
		{"gd36", "gd", "揭阳"},
		{"gd37", "gd", "茂名"},
		{"gd38", "gd", "梅州"},
		{"gd39", "gd", "清远"},
		{"gd40", "gd", "汕头"},
		{"gd41", "gd", "汕尾"},
		{"gd42", "gd", "韶关"},
		{"gd43", "gd", "深圳"},
		{"gd44", "gd", "顺德"},
		{"gd45", "gd", "阳江"},
		{"gd46", "gd", "云浮"},
		{"gd47", "gd", "湛江"},
		{"gd48", "gd", "肇庆"},
		{"gd49", "gd", "中山"},
		{"gd50", "gd", "珠海"},
		{"gs51", "gs", "白银"},
		{"gs52", "gs", "定西"},
		{"gs53", "gs", "甘南藏族自治州"},
		{"gs54", "gs", "金昌"},
		{"gs55", "gs", "酒泉"},
		{"gs56", "gs", "兰州"},
		{"gs57", "gs", "临夏回族自治州"},
		{"gs58", "gs", "陇南"},
		{"gs59", "gs", "平凉"},
		{"gs60", "gs", "庆阳"},
		{"gs61", "gs", "天水"},
		{"gs62", "gs", "张掖"},
		{"gx63", "gx", "百色"},
		{"gx64", "gx", "北海"},
		{"gx65", "gx", "防城港"},
		{"gx66", "gx", "桂林"},
		{"gx67", "gx", "河池"},
		{"gx68", "gx", "柳州"},
		{"gx69", "gx", "南宁"},
		{"gx70", "gx", "钦州"},
		{"gx71", "gx", "梧州"},
		{"gx72", "gx", "玉林"},
		{"gz73", "gz", "安顺"},
		{"gz74", "gz", "毕节"},
		{"gz75", "gz", "贵阳"},
		{"gz76", "gz", "六盘水"},
		{"gz77", "gz", "黔东南苗族侗族自治州"},
		{"gz78", "gz", "黔南布依族苗族自治州"},
		{"gz79", "gz", "黔西南布依族苗族自治"},
		{"gz80", "gz", "铜仁"},
		{"gz81", "gz", "遵义"},
		{"hb82", "hb", "鄂州"},
		{"hb83", "hb", "恩施"},
		{"hb84", "hb", "恩施土家族苗族自治州"},
		{"hb85", "hb", "黄冈"},
		{"hb86", "hb", "黄石"},
		{"hb87", "hb", "荆门"},
		{"hb88", "hb", "荆州"},
		{"hb89", "hb", "十堰"},
		{"hb90", "hb", "随州"},
		{"hb91", "hb", "武汉"},
		{"hb92", "hb", "仙桃"},
		{"hb93", "hb", "咸宁"},
		{"hb94", "hb", "襄樊"},
		{"hb95", "hb", "孝感"},
		{"hb96", "hb", "宜昌"},
		{"heb97", "heb", "保定"},
		{"heb98", "heb", "沧州"},
		{"heb99", "heb", "承德"},
		{"heb100", "heb", "邯郸"},
		{"heb101", "heb", "衡水"},
		{"heb102", "heb", "廊坊"},
		{"heb103", "heb", "秦皇岛"},
		{"heb104", "heb", "石家庄"},
		{"heb105", "heb", "唐山"},
		{"heb106", "heb", "邢台"},
		{"heb107", "heb", "张家口"},
		{"hen108", "hen", "安阳"},
		{"hen109", "hen", "鹤壁"},
		{"hen110", "hen", "焦作"},
		{"hen111", "hen", "开封"},
		{"hen112", "hen", "洛阳"},
		{"hen113", "hen", "南阳"},
		{"hen114", "hen", "平顶山"},
		{"hen115", "hen", "三门峡"},
		{"hen116", "hen", "商丘"},
		{"hen117", "hen", "新乡"},
		{"hen118", "hen", "信阳"},
		{"hen119", "hen", "许昌"},
		{"hen120", "hen", "郑州"},
		{"hen121", "hen", "周口"},
		{"hen122", "hen", "驻马店"},
		{"hen123", "hen", "潢川"},
		{"hen124", "hen", "漯河"},
		{"hen125", "hen", "濮阳"},
		{"hlj126", "hlj", "大庆"},
		{"hlj127", "hlj", "大兴安岭"},
		{"hlj128", "hlj", "哈尔滨"},
		{"hlj129", "hlj", "鹤岗"},
		{"hlj130", "hlj", "黑河"},
		{"hlj131", "hlj", "鸡西"},
		{"hlj132", "hlj", "佳木斯"},
		{"hlj133", "hlj", "牡丹江"},
		{"hlj134", "hlj", "七台河"},
		{"hlj135", "hlj", "齐齐哈尔"},
		{"hlj136", "hlj", "双鸭山"},
		{"hlj137", "hlj", "绥化"},
		{"hlj138", "hlj", "伊春"},
		{"hn139", "hn", "海口"},
		{"hn140", "hn", "三亚"},
		{"hn141", "hn", "儋州"},
		{"hun142", "hun", "常德"},
		{"hun143", "hun", "长沙"},
		{"hun144", "hun", "郴州"},
		{"hun145", "hun", "衡阳"},
		{"hun146", "hun", "怀化"},
		{"hun147", "hun", "娄底"},
		{"hun148", "hun", "邵阳"},
		{"hun149", "hun", "湘潭"},
		{"hun150", "hun", "湘西土家族苗族自治州"},
		{"hun151", "hun", "益阳"},
		{"hun152", "hun", "永州"},
		{"hun153", "hun", "岳阳"},
		{"hun154", "hun", "张家界"},
		{"hun155", "hun", "株洲"},
		{"jl156", "jl", "白城"},
		{"jl157", "jl", "白山"},
		{"jl158", "jl", "长春"},
		{"jl159", "jl", "吉林"},
		{"jl160", "jl", "辽源"},
		{"jl162", "jl", "松原"},
		{"js165", "js", "常州"},
		{"js166", "js", "淮安"},
		{"js167", "js", "连云港"},
		{"js170", "js", "苏州"},
		{"js173", "js", "无锡"},
		{"js176", "js", "扬州"},
		{"jx178", "jx", "抚州"},
		{"jx181", "jx", "景德镇"},
		{"jx184", "jx", "萍乡"},
		{"jx187", "jx", "宜春"},
		{"ln189", "ln", "鞍山"},
		{"ln192", "ln", "大连"},
		{"ln195", "ln", "阜新"},
		{"ln197", "ln", "锦州"},
		{"ln200", "ln", "沈阳"},
		{"nm203", "nm", "阿拉善盟"},
		{"nm205", "nm", "包头"},
		{"nm207", "nm", "鄂尔多斯"},
		{"nm209", "nm", "呼伦贝尔"},
		{"nm212", "nm", "乌兰察布"},
		{"nm214", "nm", "兴安盟"},
		{"nx216", "nx", "石嘴山"},
		{"nx218", "nx", "银川"},
		{"qh221", "qh", "果洛藏族自治州"},
		{"qh223", "qh", "海东"},
		{"qh224", "qh", "海南藏族自治州"},
		{"qh226", "qh", "黄南藏族自治州"},
		{"qh227", "qh", "西宁"},
		{"qh228", "qh", "玉树藏族自治州"},
		{"sc229", "sc", "阿坝藏族羌族自治州"},
		{"sc230", "sc", "巴中"},
		{"sc231", "sc", "成都"},
		{"sc232", "sc", "达川"},
		{"sc233", "sc", "达州"},
		{"sc234", "sc", "德阳"},
		{"sc235", "sc", "甘孜藏族自治州"},
		{"sc236", "sc", "广安"},
		{"sc237", "sc", "广元"},
		{"sc238", "sc", "乐山"},
		{"sc239", "sc", "凉山彝族自治州"},
		{"sc240", "sc", "绵阳"},
		{"sc241", "sc", "南充"},
		{"sc242", "sc", "内江"},
		{"sc243", "sc", "攀枝花"},
		{"sc244", "sc", "遂宁"},
		{"sc245", "sc", "西昌"},
		{"sc246", "sc", "雅安"},
		{"sc247", "sc", "宜宾"},
		{"sc248", "sc", "自贡"},
		{"sc249", "sc", "泸州"},
		{"sd250", "sd", "滨州"},
		{"sd251", "sd", "德州"},
		{"sd252", "sd", "东营"},
		{"sd253", "sd", "菏泽"},
		{"sd254", "sd", "济南"},
		{"sd255", "sd", "济宁"},
		{"sd256", "sd", "莱芜"},
		{"sd257", "sd", "聊城"},
		{"sd258", "sd", "临沂"},
		{"sd259", "sd", "青岛"},
		{"sd260", "sd", "日照"},
		{"sd261", "sd", "泰安"},
		{"sd262", "sd", "威海"},
		{"sd263", "sd", "潍坊"},
		{"sd264", "sd", "烟台"},
		{"sd265", "sd", "枣庄"},
		{"sd266", "sd", "淄博"},
		{"sh267", "sh", "上海"},
		{"shx268", "shx", "安康"},
		{"shx269", "shx", "宝鸡"},
		{"shx270", "shx", "汉中"},
		{"shx271", "shx", "商洛"},
		{"shx272", "shx", "铜川"},
		{"shx273", "shx", "渭南"},
		{"shx274", "shx", "西安"},
		{"shx275", "shx", "咸阳"},
		{"shx276", "shx", "延安"},
		{"shx277", "shx", "榆林"},
		{"sx278", "sx", "长治"},
		{"sx279", "sx", "大同"},
		{"sx280", "sx", "晋城"},
		{"sx281", "sx", "晋中"},
		{"sx282", "sx", "临汾"},
		{"sx283", "sx", "吕梁"},
		{"sx284", "sx", "朔州"},
		{"sx285", "sx", "太原"},
		{"sx286", "sx", "忻州"},
		{"sx287", "sx", "阳泉"},
		{"sx288", "sx", "运城"},
		{"tj289", "tj", "天津"},
		{"xj290", "xj", "阿克苏"},
		{"xj291", "xj", "阿勒泰"},
		{"xj292", "xj", "巴音郭楞蒙古自治州"},
		{"xj293", "xj", "博尔塔拉蒙古自治州"},
		{"xj294", "xj", "昌吉回族自治州"},
		{"xj295", "xj", "哈密"},
		{"xj296", "xj", "和田"},
		{"xj297", "xj", "喀什"},
		{"xj298", "xj", "克拉玛依"},
		{"xj299", "xj", "克孜勒苏柯尔克孜自治"},
		{"xj300", "xj", "奎屯"},
		{"xj301", "xj", "石河子"},
		{"xj302", "xj", "塔城"},
		{"xj303", "xj", "吐鲁番"},
		{"xj304", "xj", "乌鲁木齐"},
		{"xj305", "xj", "伊犁哈萨克自治州"},
		{"xz306", "xz", "阿里"},
		{"xz307", "xz", "昌都"},
		{"xz308", "xz", "拉萨"},
		{"xz309", "xz", "林芝"},
		{"xz310", "xz", "那曲"},
		{"xz311", "xz", "日喀则"},
		{"xz312", "xz", "山南"},
		{"yn313", "yn", "保山"},
		{"yn314", "yn", "楚雄彝族自治州"},
		{"yn315", "yn", "大理白族自治州"},
		{"ah340", "ah", "宣州"},
		{"ah341", "ah", "贵池"},
		{"ah342", "ah", "阜阳"},
		{"cq343", "cq", "万州"},
		{"cq344", "cq", "涪陵"},
		{"cq345", "cq", "重庆主城区"},
		{"cq346", "cq", "黔江"},
		{"gd347", "gd", "佛山南海"},
		{"gs348", "gs", "临夏"},
		{"gs349", "gs", "嘉峪关"},
		{"gs350", "gs", "庆阳地区"},
		{"gs351", "gs", "武威"},
		{"gs352", "gs", "武都"},
		{"gs353", "gs", "甘南"},
		{"gs354", "gs", "甘南州"},
		{"gs355", "gs", "西峰"},
		{"gs356", "gs", "陇南地区"},
		{"gx357", "gx", "崇左"},
		{"gx358", "gx", "来宾"},
		{"gx359", "gx", "贵港"},
		{"gx360", "gx", "贺州"},
		{"gz361", "gz", "兴义"},
		{"gz362", "gz", "凯里"},
		{"gz363", "gz", "毕节地区"},
		{"gz364", "gz", "都匀"},
		{"gz365", "gz", "铜仁地区"},
		{"gz366", "gz", "黔东南"},
		{"gz367", "gz", "黔南"},
		{"gz368", "gz", "黔西南"},
		{"gz369", "gz", "黔西南布依族苗族自治州"},
		{"hb370", "hb", "天门"},
		{"hb371", "hb", "江汉"},
		{"hb372", "hb", "洪湖"},
		{"hb373", "hb", "随枣"},
		{"hen374", "hen", "固始"},
		{"hlj375", "hlj", "加格达奇"},
		{"hlj376", "hlj", "大兴安岭地区"},
		{"hn377", "hn", ""},
		{"hun378", "hun", "吉首"},
		{"hun379", "hun", "株州"},
		{"hun380", "hun", "自治州"},
		{"jl381", "jl", "延吉"},
		{"jl382", "jl", "延边"},
		{"jl383", "jl", "扶余"},
		{"jl384", "jl", "梅河口"},
		{"jl385", "jl", "珲春"},
		{"js386", "js", "淮阴"},
		{"jx387", "jx", "临川"},
		{"nm388", "nm", "东胜"},
		{"nm389", "nm", "临河"},
		{"nm390", "nm", "乌兰察布盟"},
		{"nm391", "nm", "乌兰查布"},
		{"nm392", "nm", "乌兰浩特"},
		{"nm393", "nm", "巴彦淖尔盟"},
		{"nm394", "nm", "海拉尔"},
		{"nm395", "nm", "锡林浩特"},
		{"nm396", "nm", "锡林郭勒"},
		{"nm397", "nm", "锡盟"},
		{"nm398", "nm", "阿拉善左旗"},
		{"nm399", "nm", "阿盟"},
		{"nm400", "nm", "集宁"},
		{"nx401", "nx", "大武口"},
		{"qh402", "qh", "共和"},
		{"qh403", "qh", "同仁"},
		{"qh404", "qh", "平安"},
		{"qh405", "qh", "德令哈"},
		{"qh406", "qh", "果洛"},
		{"qh407", "qh", "果洛州"},
		{"qh408", "qh", "海东地区"},
		{"qh409", "qh", "海北"},
		{"qh410", "qh", "海北州"},
		{"qh411", "qh", "海南"},
		{"qh412", "qh", "海南州"},
		{"qh413", "qh", "海晏"},
		{"qh414", "qh", "海西"},
		{"qh415", "qh", "海西州"},
		{"qh416", "qh", "玉树"},
		{"qh417", "qh", "玉树州"},
		{"qh418", "qh", "玛沁"},
		{"qh419", "qh", "黄南"},
		{"qh420", "qh", "黄南州"},
		{"sc421", "sc", "凉山"},
		{"sc422", "sc", "康定"},
		{"sc423", "sc", "甘孜"},
		{"sc424", "sc", "眉山"},
		{"sc425", "sc", "资阳"},
		{"sc426", "sc", "阿坝"},
		{"sc427", "sc", "马尔康"},
		{"shx428", "shx", "商州"},
		{"sx429", "sx", "榆次"},
		{"sx430", "sx", "长治县"},
		{"xj431", "xj", "伊宁"},
		{"xj432", "xj", "伊犁"},
		{"xj433", "xj", "克孜勒苏柯尔克孜自治州"},
		{"xj434", "xj", "克州"},
		{"xj435", "xj", "博乐"},
		{"xj436", "xj", "博州"},
		{"xj437", "xj", "和田地区"},
		{"xj438", "xj", "塔城地区"},
		{"xj439", "xj", "巴州"},
		{"xj440", "xj", "库尔勒"},
		{"xj441", "xj", "昌吉"},
		{"xj442", "xj", "阿勒泰地区"},
		{"xj443", "xj", "阿图什"},
		{"xz444", "xz", "乃东"},
		{"xz445", "xz", "山南地区"},
		{"xz446", "xz", "日喀则地区"},
		{"xz447", "xz", "昌都地区"},
		{"xz448", "xz", "林芝地区"},
		{"xz449", "xz", "那曲地区"},
		{"xz450", "xz", "阿里地区"},
		{"yn451", "yn", "个旧"},
		{"yn452", "yn", "中甸"},
		{"yn453", "yn", "临沧地区"},
		{"yn454", "yn", "丽江地区"},
		{"yn455", "yn", "保山(怒江)"},
		{"yn456", "yn", "六库"},
		{"yn457", "yn", "大理"},
		{"yn458", "yn", "德宏"},
		{"yn459", "yn", "怒江"},
		{"yn460", "yn", "怒江傈傈族自治州"},
		{"yn461", "yn", "思茅地区"},
		{"yn462", "yn", "文山"},
		{"yn463", "yn", "普洱"},
		{"yn464", "yn", "景洪"},
		{"yn465", "yn", "楚雄"},
		{"yn466", "yn", "泸水"},
		{"yn467", "yn", "潞西"},
		{"yn468", "yn", "版纳"},
		{"yn469", "yn", "红河"},
		{"yn470", "yn", "迪庆"},
		{"zj471", "zj", "衙州"},
		{"yn316", "yn", "德宏傣族景颇族自治州"},
		{"yn317", "yn", "迪庆藏族自治州"},
		{"yn318", "yn", "红河哈尼族彝族自治州"},
		{"yn319", "yn", "昆明"},
		{"yn320", "yn", "丽江"},
		{"yn321", "yn", "临沧"},
		{"yn322", "yn", "怒江傈僳族自治州"},
		{"yn323", "yn", "曲靖"},
		{"yn324", "yn", "思茅"},
		{"yn325", "yn", "文山壮族苗族自治州"},
		{"yn326", "yn", "西双版纳傣族自治州"},
		{"yn327", "yn", "玉溪"},
		{"yn328", "yn", "昭通"},
		{"zj329", "zj", "杭州"},
		{"zj330", "zj", "湖州"},
		{"zj331", "zj", "嘉兴"},
		{"zj332", "zj", "金华"},
		{"zj333", "zj", "丽水"},
		{"zj334", "zj", "宁波"},
		{"zj335", "zj", "绍兴"},
		{"zj336", "zj", "台州"},
		{"zj337", "zj", "温州"},
		{"zj338", "zj", "舟山"},
		{"zj339", "zj", "衢州"},
		{"jl161", "jl", "四平"},
		{"jl163", "jl", "通化"},
		{"jl164", "jl", "延边朝鲜族自治州"},
		{"js168", "js", "南京"},
		{"js169", "js", "南通"},
		{"js171", "js", "宿迁"},
		{"js172", "js", "泰州"},
		{"js174", "js", "徐州"},
		{"js175", "js", "盐城"},
		{"js177", "js", "镇江"},
		{"jx179", "jx", "赣州"},
		{"jx180", "jx", "吉安"},
		{"jx182", "jx", "九江"},
		{"jx183", "jx", "南昌"},
		{"jx185", "jx", "上饶"},
		{"jx186", "jx", "新余"},
		{"jx188", "jx", "鹰潭"},
		{"ln190", "ln", "本溪"},
		{"ln191", "ln", "朝阳"},
		{"ln193", "ln", "丹东"},
		{"ln194", "ln", "抚顺"},
		{"ln196", "ln", "葫芦岛"},
		{"ln198", "ln", "辽阳"},
		{"ln199", "ln", "盘锦"},
		{"ln201", "ln", "铁岭"},
		{"ln202", "ln", "营口"},
		{"nm204", "nm", "巴彦淖尔"},
		{"nm206", "nm", "赤峰"},
		{"nm208", "nm", "呼和浩特"},
		{"nm210", "nm", "通辽"},
		{"nm211", "nm", "乌海"},
		{"nm213", "nm", "锡林郭勒盟"},
		{"nx215", "nx", "固原"},
		{"nx217", "nx", "吴忠"},
		{"nx219", "nx", "中卫"},
		{"qh220", "qh", "格尔木"},
		{"qh222", "qh", "海北藏族自治州"},
		{"qh225", "qh", "海西蒙古族藏族自治州"},
		{"UNKN", "UNKN", "UNKNNOWN"}
	};

	public static final String UNKN = "UNKN";
}
